"""
This file demonstrates two different styles of tests (one doctest and one
unittest). These will both pass when you run "manage.py test".

Replace these with more appropriate tests for your application.
"""

from django.test import TestCase

class TestMovimentacaoProduto(TestCase):

    def _get_produto(self):
        from models import Produto
        import uuid
        import random
        nomes_produtos = ['dipirona', 'remedio', 'paracetamol']
        p = Produto(descricao=random.choice(nomes_produtos), preco_de_venda=random.randint(1, 100))
        p.save()
        return p
    
    def _get_user(self):
        from django.contrib.auth.models import User
        import random
        nomes_usuarios = ['george', 'alexandre', 'andre']
        u = User(username=random.choice(nomes_usuarios), is_superuser=True)
        u.save()
        return u
    
    def test_inserir_ou_modificar_uma_movimentacao_de_produto_deve_diminuir_a_quantidade_do_produto(self):
        p = self._get_produto()
        u = self._get_user()
        assert p.quantidade == 0
        
        from models import MovimentacaoProduto, TIPO_MOVIMENTACAO_PRODUTO
        m = MovimentacaoProduto(produto=p, quantidade=10, tipo=TIPO_MOVIMENTACAO_PRODUTO.ENTRADA, usuario=u)
        m.save()
        
        assert p.quantidade == 10
        
        m.quantidade = 20
        m.save()
        assert p.quantidade == 20
        
        m2 = MovimentacaoProduto(produto=p, quantidade=10, tipo=TIPO_MOVIMENTACAO_PRODUTO.ENTRADA, usuario=u)
        m2.save()
        
        assert p.quantidade == 30



